Requirement already satisfied: matplotlib in /opt/conda/lib/python3.10/site-packages (3.10.3) Requirement already satisfied: contourpy>=1.0.1 in /opt/conda/lib/python3.10/site-packages (from matplotlib) (1.3.2) Requirement already satisfied: cycler>=0.10 in /opt/conda/lib/python3.10/site-packages (from matplotlib) (0.12.1) Requirement already satisfied: fonttools>=4.22.0 in /opt/conda/lib/python3.10/site-packages (from matplotlib) (4.58.4) Requirement already satisfied: kiwisolver>=1.3.1 in /opt/conda/lib/python3.10/site-packages (from matplotlib) (1.4.8) Requirement already satisfied: numpy>=1.23 in /opt/conda/lib/python3.10/site-packages (from matplotlib) (1.26.0) Requirement already satisfied: packaging>=20.0 in /opt/conda/lib/python3.10/site-packages (from matplotlib) (23.1) Requirement already satisfied: pillow>=8 in /opt/conda/lib/python3.10/site-packages (from matplotlib) (9.4.0) Requirement already satisfied: pyparsing>=2.3.1 in /opt/conda/lib/python3.10/site-packages (from matplotlib) (3.2.3) Requirement already satisfied: python-dateutil>=2.7 in /opt/conda/lib/python3.10/site-packages (from matplotlib) (2.8.2) Requirement already satisfied: six>=1.5 in /opt/conda/lib/python3.10/site-packages (from python-dateutil>=2.7->matplotlib) (1.16.0) WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv Note: you may need to restart the kernel to use updated packages.
Requirement already satisfied: seaborn in /opt/conda/lib/python3.10/site-packages (0.13.2) Requirement already satisfied: numpy!=1.24.0,>=1.20 in /opt/conda/lib/python3.10/site-packages (from seaborn) (1.26.0) Requirement already satisfied: pandas>=1.2 in /opt/conda/lib/python3.10/site-packages (from seaborn) (2.1.4) Requirement already satisfied: matplotlib!=3.6.1,>=3.4 in /opt/conda/lib/python3.10/site-packages (from seaborn) (3.10.3) Requirement already satisfied: contourpy>=1.0.1 in /opt/conda/lib/python3.10/site-packages (from matplotlib!=3.6.1,>=3.4->seaborn) (1.3.2) Requirement already satisfied: cycler>=0.10 in /opt/conda/lib/python3.10/site-packages (from matplotlib!=3.6.1,>=3.4->seaborn) (0.12.1) Requirement already satisfied: fonttools>=4.22.0 in /opt/conda/lib/python3.10/site-packages (from matplotlib!=3.6.1,>=3.4->seaborn) (4.58.4) Requirement already satisfied: kiwisolver>=1.3.1 in /opt/conda/lib/python3.10/site-packages (from matplotlib!=3.6.1,>=3.4->seaborn) (1.4.8) Requirement already satisfied: packaging>=20.0 in /opt/conda/lib/python3.10/site-packages (from matplotlib!=3.6.1,>=3.4->seaborn) (23.1) Requirement already satisfied: pillow>=8 in /opt/conda/lib/python3.10/site-packages (from matplotlib!=3.6.1,>=3.4->seaborn) (9.4.0) Requirement already satisfied: pyparsing>=2.3.1 in /opt/conda/lib/python3.10/site-packages (from matplotlib!=3.6.1,>=3.4->seaborn) (3.2.3) Requirement already satisfied: python-dateutil>=2.7 in /opt/conda/lib/python3.10/site-packages (from matplotlib!=3.6.1,>=3.4->seaborn) (2.8.2) Requirement already satisfied: pytz>=2020.1 in /opt/conda/lib/python3.10/site-packages (from pandas>=1.2->seaborn) (2023.3.post1) Requirement already satisfied: tzdata>=2022.1 in /opt/conda/lib/python3.10/site-packages (from pandas>=1.2->seaborn) (2023.3) Requirement already satisfied: six>=1.5 in /opt/conda/lib/python3.10/site-packages (from python-dateutil>=2.7->matplotlib!=3.6.1,>=3.4->seaborn) (1.16.0) WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv Note: you may need to restart the kernel to use updated packages.
EDA 분석¶
문서 이미지 분류 CV EDA는 스캔 품질, 종이 상태, 회전, 손상, OCR 인식 가능성 같은 문서 특유의 노이즈 성능에 영향을 줍니다.
1️⃣ 클래스 분포 (Imbalance 확인) : Macreo F!이 평가지표이며, 해당 평가지표는 Imbalance에 민감.¶
- train.csv에서 target별 분포 파악.
- Bar chart로 클래스별 개수 비교.
- 일부 희귀 클래스가 있다면 oversampling/undersampling 필요 여부 판단.
2️⃣ 이미지 해상도, 종횡비 분석¶
- 모든 이미지의 (Width, Height) 저장.
- Min, Max, Mean, Std 확인.
- 너무 작은 이미지 있으면 OCR 누락 가능성, 너무 큰 이미지 있으면 resize 정책 검토. ✅ 문서 스캔본은 종종 크기가 제각각임.
3️⃣ 샘플 이미지 시각화¶
- 각 클래스별로 대표 샘플 5~10장씩 랜덤으로 그리드 출력.
- 회전, 빛 번짐, 종이 구김 등 노이즈가 보이는지 확인. ✅ 실제 Augraphy/Albumentations 증강 전략에 영향.
4️⃣ Rotation/Flip 패턴 체크¶
- 일부 이미지가 90°, 180° 회전되어 있을 수 있음.
- Test셋에 rotation noise가 포함돼 있다면 학습셋에도 강한 rotation 증강 필요.
5️⃣ Noise & Blur 탐지¶
- 이미지 sharpness 분포 간단히 확인.
- OpenCV의 cv2.Laplacian으로 Blur Score 확인.
- 빛 번짐, 스캔 자국, 스탬프/필기 있는지. ✅ Augraphy로 같은 패턴 재현 가능.
6️⃣ 클래스별 시각적 유사도 확인¶
- 혼동될 가능성이 있는 클래스(예: 운전면허증 vs 주민등록증) 비교 시각화.
- 최종 Confusion Matrix 분석 포인트 미리 찾기. ✅ 이후 Hard Negative Mining에도 도움.
✅ 추천 추가: Augraphy 증강 후보 선정¶
- EDA에서 찾은 Rotation/Noise → 증강 파이프라인 설계에 반영
- 문서 특화 증강: 구김, Blur, InkBleed, Brightness variation, Folding 등
1570 3140
학습 데이터셋 크기: (591, 443, 3) 16 이미지 파일 경로: ../data/train/002f99746285dfdd.jpg 평가 데이터셋 크기: (591, 443, 3) 0 평가 이미지 경로: ../data/test/0008fdb22ddce0ce.jpg
클래스 분포 확인¶
- account_number (계좌번호)
- application_for_payment_of_pregnancy_medical_e (임신의료비 지급신청서)
- car_dashboard (차량 대시보드)
- confirmation_of_admission_and_discharge (입퇴원 확인서)
- diagnosis (진단서)
- driver_licence (운전면허증)
- medical_bill_receipts (의료비 영수증)
- medical_outpatient_certificate (의료 외래 증명서)
- national_id_card (주민등록증)
- passport (여권)
- payment_confirmation (결제 확인서)
- pharmaceutical_receipt (약국 영수증)
- prescription (처방전)
- resume (이력서)
- statement_of_opinion (의견서)
- vehicle_registration_certificate (차량등록증)
- vehicle_registration_plate (차량번호판)
class_name count 0 account_number 100 1 application_for_payment_of_pregnancy_medical_e... 46 2 car_dashboard 100 3 confirmation_of_admission_and_discharge 100 4 diagnosis 100 5 driver_lisence 100 6 medical_bill_receipts 100 7 medical_outpatient_certificate 100 8 national_id_card 100 9 passport 100 10 payment_confirmation 100 11 pharmaceutical_receipt 100 12 prescription 100 13 resume 74 14 statement_of_opinion 50 15 vehicle_registration_certificate 100 16 vehicle_registration_plate 100
클래스 분포¶
- 17개 중 14개 이미지 100개 샘플 보유.
1 application_for_payment_of_pregnancy_medical_expenses: 46
13 resume 74
14 statement_of_opinion 50
ID target 0 002f99746285dfdd.jpg 16 1 008ccd231e1fea5d.jpg 10 2 008f5911bfda7695.jpg 10 3 009235e4c9c07af5.jpg 4 4 00b2f44967580c74.jpg 16 ... ... ... 1565 fed9e9ec4a77bc06.jpg 4 1566 feeade617aa68c45.jpg 7 1567 ff51dd281a8423f1.jpg 11 1568 ff8a6a251ce51c95.jpg 5 1569 ffc22136f958deb1.jpg 9 [1570 rows x 2 columns] Index(['ID', 'target'], dtype='object')
target class_name 0 0 account_number 1 1 application_for_payment_of_pregnancy_medical_e... 2 2 car_dashboard 3 3 confirmation_of_admission_and_discharge 4 4 diagnosis 5 5 driver_lisence 6 6 medical_bill_receipts 7 7 medical_outpatient_certificate 8 8 national_id_card 9 9 passport 10 10 payment_confirmation 11 11 pharmaceutical_receipt 12 12 prescription 13 13 resume 14 14 statement_of_opinion 15 15 vehicle_registration_certificate 16 16 vehicle_registration_plate Index(['target', 'class_name'], dtype='object')
test, train 데이터셋 각 샘플들 확인¶
문서 이미지 기술 통계¶
- 실제로 증강(Augraphy), 전처리 파이프라인 설계의 근거 데이터가 됨.
- 특히 rotation, blur, noise는 Test셋이 실제 현실 데이터라면 더 중요.
| Feature | 도출할 수 있는 결과 인사이트 | 실질적으로 취할 수 있는 전략 |
|---|---|---|
width |
가로 해상도 분포 → 작은 해상도 이미지 비율 확인 | 작은 이미지는 resize 시 픽셀 깨짐 위험 → 최소 해상도 threshold 정하거나 padding 사용 |
height |
세로 해상도 분포 → 세로 길이 편차 확인 | 종횡비 균일화 → Resize 후 Aspect Ratio 유지 or Pad로 빈 공간 채움 |
aspect_ratio |
종횡비 왜곡 가능성 → 극단적인 비율 여부 | Aspect Ratio 보존 Resize / Warping 방지 |
channels |
흑백/컬러 혼합 여부 → RGB 채널 수 확인 | 흑백이면 ColorJitter 불필요, 컬러이면 색상 변환 증강 추가 가능 |
file_size_kb |
파일 용량 분포 → 압축도 편차 파악 | 과도한 압축(용량 적음)은 화질 열화 위험 → 압축 artifacts 대응 증강 |
total_pixels |
이미지 크기 총합 → 극단적 소형/대형 문서 탐지 | 대형은 다운스케일, 소형은 Upscale 시 품질 유지 증강 고려 |
brightness |
밝기 평균 → 너무 어둡거나 밝은 문서 비율 | Brightness/Contrast 증강 범위 설정 |
contrast |
대비 낮은 문서 비율 | Contrast Limited Adaptive Histogram Equalization(CLAHE) 전처리 |
sharpness |
Blur 심한 문서 탐지 | Blur 증강 (Defocus) or 선명화(Sharpen) 필요성 결정 |
edge_ratio |
문서 복잡도/경계 선명도 → 표/선 구조 비율 | 복잡한 문서는 더 높은 해상도 유지 필요, Simple은 압축 가능 |
b_mean g_mean r_mean |
평균 색상 → 컬러 균일성 확인 | 스캔 조명 영향 탐지, White Balance 전처리 고려 |
histogram_entropy |
이미지 정보량 → 단조로운 배경/정보 많은 문서 구분 | Low Entropy → Adaptive Threshold / Binarization |
histogram_skewness |
밝기 치우침 → 그림자, 빛 번짐 여부 | 그림자 제거 증강, 밝기 정규화 |
histogram_kurtosis |
피크/플랫 정도 → 극단적 contrast 여부 | Flat하면 가벼운 Enhance, High하면 노이즈 제거 주의 |
skew_angle |
기울기 편향 → 스캔 잘못된 문서 비율 | Rotation 증강, 또는 Inference 전 Auto Deskew |
white_space_ratio |
빈 공간 비율 → 내용 밀도 | Margin Cut, Crop, OCR 영역 탐지시 Threshold 조정 |
noise_level |
스캔 노이즈 강도 → 잡음 많은 문서 비율 | Noise Injection 증강 범위 결정 |
jpeg_quality_estimate |
압축 artifacts 심한 비율 | 압축 artifact 대응 증강(Augraphy), 원본 화질 관리 정책 |
학습 데이터셋 샘플 개수 : 1570
ID target
0 002f99746285dfdd.jpg 16
1 008ccd231e1fea5d.jpg 10
2 008f5911bfda7695.jpg 10
3 009235e4c9c07af5.jpg 4
4 00b2f44967580c74.jpg 16
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1570/1570 [00:28<00:00, 54.49it/s]
count mean std min \
idx 1570.0 784.500000 453.364276 0.000000
width 1570.0 497.613376 79.370316 384.000000
height 1570.0 538.169427 76.074772 348.000000
channels 1570.0 3.000000 0.000000 3.000000
aspect_ratio 1570.0 0.970007 0.323053 0.563050
total_pixels 1570.0 261779.949682 120.726659 261184.000000
brightness 1570.0 148.395967 35.296561 17.588444
contrast 1570.0 48.099466 19.195462 10.536620
sharpness 1570.0 1357.220087 822.140831 69.930619
edge_ratio 1570.0 0.082507 0.046438 0.002036
b_mean 1570.0 149.988828 35.995643 11.215654
g_mean 1570.0 148.742855 35.822025 11.224007
r_mean 1570.0 146.456218 35.091765 17.406363
histogram_entropy 1570.0 6.285560 0.639936 4.070573
histogram_skewness 1570.0 3.944939 4.107020 -0.052748
histogram_kurtosis 1570.0 11.290074 28.931617 0.000101
skew_angle 1570.0 -83.290696 23.630915 -90.000000
white_space_ratio 1570.0 0.160193 0.204588 0.000000
noise_level 1570.0 22.437822 8.277181 2.957964
jpeg_quality_estimate 1570.0 0.003794 0.004068 0.000634
25% 50% 75% \
idx 392.250000 784.500000 1176.750000
width 443.000000 443.000000 591.000000
height 443.000000 591.000000 591.000000
channels 3.000000 3.000000 3.000000
aspect_ratio 0.749577 0.749577 1.334086
total_pixels 261813.000000 261813.000000 261813.000000
brightness 126.958214 156.746556 174.322808
contrast 33.935308 41.794323 59.490628
sharpness 766.338681 1198.114066 1793.783542
edge_ratio 0.049826 0.072062 0.112078
b_mean 130.067327 158.384007 176.408769
g_mean 127.809441 157.073585 174.682364
r_mean 123.715320 154.673555 172.294698
histogram_entropy 5.878024 6.259711 6.675744
histogram_skewness 1.489075 2.485185 3.693036
histogram_kurtosis 0.106299 0.481851 2.145641
skew_angle -90.000000 -90.000000 -90.000000
white_space_ratio 0.001520 0.063725 0.255759
noise_level 16.616946 21.236475 27.220543
jpeg_quality_estimate 0.001748 0.002579 0.004053
max
idx 1569.000000
width 753.000000
height 682.000000
channels 3.000000
aspect_ratio 2.163793
total_pixels 262144.000000
brightness 211.444996
contrast 113.592955
sharpness 4954.869129
edge_ratio 0.259949
b_mean 217.894780
g_mean 211.959949
r_mean 215.953765
histogram_entropy 7.888796
histogram_skewness 15.238883
histogram_kurtosis 187.240791
skew_angle -0.000000
white_space_ratio 0.888672
noise_level 55.604062
jpeg_quality_estimate 0.040442
기술 통계를 통한 인사이트 도출¶
해상도 & 종횡비¶
| 항목 | 값 | 인사이트 | 전략 |
|---|---|---|---|
| width | 평균 497px (min 384 ~ max 753) | 해상도가 꽤 작음 → 작은 문서 품질 주의 | 너무 작은 건 Upscale, Resize+Padding |
| height | 평균 538px (min 348 ~ max 682) | 세로는 좀 긴 편 | Aspect Ratio 보존 중요 |
| aspect_ratio | 평균 0.97, max 2.16 | 종횡비 분산 있음 (긴 문서 있음) | 비율 보존 Resize → Pad로 채워야 왜곡 방지 |
밝기/ 대비 품질¶
| 항목 | 값 | 인사이트 | 전략 |
|---|---|---|---|
| brightness | 평균 148.4, min 17.5, max 211 | 일부 굉장히 어두운 문서 있음 | 밝기 정규화 증강 필요 |
| contrast | 평균 48.1, min 10.5 | 낮은 대비 → 흐릿한 스캔 있음 | CLAHE 적용 고려 |
| b/g/r_mean | 146~149 범위 | 컬러 불균형 크지 않음 | White Balance는 크게 필요 없음 |
Sharpness & Edge 복잡도¶
| 항목 | 값 | 인사이트 | 전략 |
|---|---|---|---|
| sharpness | 평균 1357, max 4954 | Sharpness 편차 매우 큼 → 흐린 스캔 많음 | Blur 증강 + 선명화 모델 튜닝 |
| edge_ratio | 평균 8.2% (max 25%) | 복잡한 테이블/선 포함 문서 존재 | OCR box 추출시 Edge Noise 주의 |
히스토그램 특성 (정보량)¶
| 항목 | 값 | 인사이트 | 전략 |
|---|---|---|---|
| hist_entropy | 평균 6.2 (max 7.9) | 정보량 꽤 높음 → 다양한 문서 | 단조로움 대비 Robustness 증강 |
| hist_skewness | 평균 3.9 (max 15.2) | 밝기 분포 치우침 있음 | 그림자 보정 증강 |
| hist_kurtosis | 평균 11.2 (max 187) | 일부 극단적 피크 분포 | Adaptive threshold, smoothing 설계 필요 |
Skew Angle (회전 왜곡)¶
| 항목 | 값 | 인사이트 | 전략 |
|---|---|---|---|
| skew_angle | 평균 -83도, min -90, max 0 | -90도 근처 많음 → 문서가 세로로 회전된 케이스 다수 | Train에 Rotation 증강 필수! Inference Deskew 필요 |
공백 비율 (White Space)¶
| 항목 | 값 | 인사이트 | 전략 |
|---|---|---|---|
| white_space_ratio | 평균 16% (max 88%) | 일부 문서는 여백이 거의 없음 (dense 문서) | Margin crop or Centering 필요 |
Noise Level & JPEG 품질¶
| 항목 | 값 | 인사이트 | 전략 |
|---|---|---|---|
| noise_level | 평균 22, max 55 | 잡음 편차 있음 | Noise 증강(Augraphy Noise Phase) |
| jpeg_quality_estimate | 평균 0.0037, max 0.04 | 일부는 압축 artifacts 있음 | Compression artifacts 증강 |
100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 3140/3140 [00:53<00:00, 58.34it/s]
count mean std min \
idx 3140.0 1569.500000 906.584249 0.000000
width 3140.0 517.085032 79.846556 343.000000
height 3140.0 518.556369 79.803967 343.000000
channels 3140.0 3.000000 0.000000 3.000000
aspect_ratio 3140.0 1.045708 0.317740 0.449541
total_pixels 3140.0 261787.039490 118.835685 261120.000000
brightness 3140.0 172.296803 34.456247 32.234088
contrast 3140.0 49.228707 20.622606 13.199308
sharpness 3140.0 688.369854 549.666666 53.730124
edge_ratio 3140.0 0.059358 0.036769 0.002013
b_mean 3140.0 173.213657 34.332670 31.075695
g_mean 3140.0 172.542000 34.736380 25.586231
r_mean 3140.0 171.134752 34.737333 25.914672
histogram_entropy 3140.0 6.136561 0.597689 3.422737
histogram_skewness 3140.0 5.716070 4.086486 -0.049873
histogram_kurtosis 3140.0 14.189475 23.784543 0.000246
skew_angle 3140.0 -69.437151 35.882261 -90.000000
white_space_ratio 3140.0 0.390617 0.274982 0.000000
noise_level 3140.0 21.160999 7.277478 4.490334
jpeg_quality_estimate 3140.0 0.006982 0.004676 0.000659
25% 50% 75% \
idx 784.750000 1569.500000 2354.250000
width 443.000000 489.000000 591.000000
height 443.000000 535.500000 591.000000
channels 3.000000 3.000000 3.000000
aspect_ratio 0.749577 0.914688 1.334086
total_pixels 261813.000000 261813.000000 261813.000000
brightness 153.729869 177.743982 199.871576
contrast 33.442413 42.378109 62.780802
sharpness 322.646434 528.187434 867.300183
edge_ratio 0.034528 0.051602 0.075832
b_mean 155.104092 179.291418 200.599507
g_mean 153.997541 178.195756 200.245467
r_mean 151.692121 176.735538 199.278374
histogram_entropy 5.736810 6.078918 6.490517
histogram_skewness 2.091002 4.647940 9.157573
histogram_kurtosis 0.330484 2.665698 18.813673
skew_angle -90.000000 -90.000000 -75.028715
white_space_ratio 0.151594 0.353658 0.632783
noise_level 15.715907 19.337564 25.871049
jpeg_quality_estimate 0.003557 0.005831 0.009325
max
idx 3139.000000
width 763.000000
height 763.000000
channels 3.000000
aspect_ratio 2.224490
total_pixels 262144.000000
brightness 226.015379
contrast 119.279401
sharpness 4697.581178
edge_ratio 0.229945
b_mean 226.942199
g_mean 226.137396
r_mean 227.138603
histogram_entropy 7.838874
histogram_skewness 15.066031
histogram_kurtosis 212.025717
skew_angle -0.000000
white_space_ratio 0.962508
noise_level 51.237145
jpeg_quality_estimate 0.056646
Train vs Test 비교 분석¶
| Feature | Train 평균 | Test 평균 | 차이점 핵심 인사이트 |
|---|---|---|---|
| Width / Height | 498×538 | 517×519 | Test가 살짝 더 크고 비율은 살짝 정사각형에 가까움 |
| Aspect Ratio | 0.97 | 1.04 | Train은 종횡비 1 이하, Test는 더 정사각형 + max 2.2 → 긴 문서 여전히 존재 |
| Brightness | 148.4 | 172.3 | Test가 훨씬 밝음 |
| Contrast | 48.1 | 49.2 | 거의 비슷 |
| Sharpness | 1357 | 688 | Test가 훨씬 Blur 심함 |
| Edge Ratio | 0.082 | 0.059 | Test가 경계선 복잡도가 낮음 |
| Histogram Entropy | 6.28 | 6.13 | 정보량 비슷, Test가 살짝 단조로움 |
| Histogram Skewness | 3.94 | 5.72 | Test는 밝기 분포가 오른쪽으로 치우침 → 밝은 배경 ↑ |
| Skew Angle | -83 | -69 | 여전히 강한 Skew 존재 (최대 -90) |
| White Space Ratio | 0.16 | 0.39 | Test가 공백 비율 훨씬 높음 |
| Noise Level | 22.4 | 21.1 | Noise Level 유사, Test가 약간 깨끗함 |
| JPEG Quality Estimate | 0.0038 | 0.0070 | Test가 더 높은 artifacts 추정 → 압축 손실 더 있음 |
최종 EDA 인사이트¶
| 항목 | EDA 인사이트 | 대응 전략 |
|---|---|---|
| 해상도 & Aspect Ratio | Test가 평균적으로 조금 더 크고 정사각형에 가까움. 긴 문서도 여전히 존재. | - 긴 문서 강제로 Resize + Pad- Aspect Ratio 유지 필수 → 왜곡 방지 |
| 밝기 & Contrast | Test는 밝기 평균이 훨씬 높음. Skewness↑ → 밝은 픽셀에 치우침 (빛 번짐/백지). | - Brightness/Contrast 증강 범위 ↑ - 밝기 높은 문서에 Robust한 모델 학습 |
| Sharpness & Blur | Train 평균 Sharpness 1357 → Test 688 → Test Blur 심함! | - Augraphy Blur Phase 강도 ↑ - Laplacian variance 기반 선명 샘플 Blur 추가 |
| Edge Ratio | Test 경계선 복잡도 낮음 → 표/테이블 적고 공백↑ 텍스트 위주 | - Margin Crop & Content Focus 적용 - 공백 많은 금융문서 정보손실 방지 |
| Skew Angle | Train/Test 모두 Skew 심함 (-90~0). Test 평균 -69도로 약간 덜함. | - Deskew Phase 고려 - Rotation 증강 + Affine Transform으로 Skew 강화 |
| White Space Ratio | Test 평균 공백 비율 0.39 (Train은 0.16). 공백 많아 배경 학습 위험 ↑ | - Margin Cut 증강으로 Content 중심 - Aspect Ratio 유지하며 Padding 안정화 |
| Noise Level & JPEG Artifacts | Noise는 거의 동일. Test JPEG Proxy 2배 ↑ → 압축 artifacts 심함. | - Augraphy Compression Phase 활성화 - Quality↓ 이미지로 artifacts 대응 |
Train vs Test 기술 통계 비교 EDA¶
- KDE Plot : 연속형 분포 확인 / 스무딩 곡선으로 모양 부드럽게 확인 가능
- 바이올린 플롯 : 분포 모양까지 확인 / 박스플롯 + KDE 결합 -> 양 끝 꼬리 비교